Computer systems and communication systems require various memories to store and retrieve information associated with any given operating system, or database. Presently, a variety of memories are used over a wide range of applications. For example, nonvolatile memories are used in cellular telephone applications, while volatile memories are used as cache memory and main memory in personal computers.
Traditionally, memory has been the bottleneck of communication systems and computer systems due to its slower access speed with respect to the processing speed of the associated microprocessor or microcontroller. Synchronous memories have been developed to temporarily alleviate this memory bottleneck. Synchronous dynamic random access memory ("SDRAM", hereafter) has been introduced with processing speeds of 85 megahertz and more.
SDRAMs offer a different concept in memory architecture with respect to traditional dynamic random access memory ("DRAM", hereafter). Traditional DRAMs include fast page mode (FPM) and extended data out (EDO) modes. SDRAMs have many features to improve their performance. For instance, SDRAMs have the ability to interleave between multiple banks of memory. SDRAMs also contain logic to operate as a state machine based on an externally supply system clock. A11 address, command, data and input/output ("I/O") signals are synchronized on the positive edge of an externally supplied system clock. The complexity of the SDRAM with the state machine and the higher operating speeds increases the difficulty of testing it. For example, as an SDRAM changes states, it is difficult to predict what the output will be without knowing the particular state. Also, an invalid state can be entered and the ability to escape from the state may be difficult. Presently, SDRAMs do not offer a reset feature.
Embedded memories are also used to alleviate the memory bottleneck. Various DRAM and SRAM memories are now embedded on microprocessors and microcontrollers. Embedded memories reduce layout, increase the access speed, and decrease the overall manufacturing costs of the systems in which they are incorporated. However, embedded memories do not have external pins. Therefore, testing embedded memories is also difficult. In these case, the microprocessor or microcontroller controls the memory testing by sending and receiving address and data information to and from the embedded memory.
Various test philosophies have been developed to test embedded memories; including built in self test and boundary scan. However, these test methodologies increase silicon area and overall cost. Also, they test the part to determine if it functions properly instead of observing what state the part is in.